<?php
defined('ANT_ACCESS') or die('Access denided');
/**
 * Ant Framework
 *
 * An open source application development framework for PHP 5
 *
 * @package		Ant Framework
 * @author		Meshin Dmitriy
 * @copyright	Copyright (c) 2008, Meshin Dmitriy
 * @license		GNU Public Lisence v2
 * @link		http://code.google.com/p/ant-framework
 * @desc		Базовые функции
 **/

	//-----------------------------------------------------------------------------

	/*
	 *	Создаёт экземпляр класса
	 *	По умолчанию подгружает системный класс
	 * 
	 * @access	public
	 * @param	string	имя класса
	 * @param	boolean	системный ли класс
	 * @return	&object
	 * */
	function &load_class($name, $system = TRUE){
		//	массив объектов
		static $objects = array();

		//	если такой класс уже загружен
		if (isset($objects[$name]))
		{
			return $objects[$name];
		}
		//	если такой класс отсутствует
		else
		{
			//	если библиотека системная
			if($system){
				require_once(get_folder("sys_libs").$name.EXT);
				$class_name = "ANT_".$name;
			}
			//	если библиотека пользовательская
			else
			{
				require_once(get_folder("libs").$name.EXT);
				$class_name = $name;
			}
			$objects[$name] =& new $class_name();
			return $objects[$name];
		}
	}
	
	//-----------------------------------------------------------------------------
	
	/*
	 *	Возвращает адрес каталога по его псевдоимени
	 * 
	 * @access	public
	 * @param	string	псевдоимя каталога
	 * @return	string	адрес каталога
	 * */
	function get_folder($name){
		global $sys_folders;
		return $sys_folders[$name];
	}

	//-----------------------------------------------------------------------------
	
	/*
	 *	Возвращает массив конфигов
	 * 
	 * @access	public
	 * @param	string	имя конфига
	 * @return	array	массив конфигов
	 * */
	function &get_config($name){
		static $configs_array;
		if(isset($configs_array[$name])){
			return $configs_array[$name];
		}

		require_once(get_folder("configs").$name.EXT);

		if(!is_array($configs)){
			exit("<br>ERROR: Configs in ".$name." is not array");
		}
		$configs_array[$name] = $configs;
		return $configs;
	}

	//-----------------------------------------------------------------------------
	
	/*
	 *	Возвращает http-адрес
	 * 
	 * @access	public
	 * @param	string	адрес
	 * @return	string	полный адрес
	 * */
	function site_url($addr){
		global $site_url;
		return $site_url.$addr;
	}
	
	//-----------------------------------------------------------------------------
	
	/*
	 *	Возвращает ссылку на объект
	 * 
	 * @access	public
	 * @return	&object	ссылка на объект
	 * */
	function &get_instance(){
		global $CONTR;
		return $CONTR;
	}
?>